package br.cin.ufpe.corba.namingservice;

import br.cin.ufpe.corba.ObjectRef;
import br.cin.ufpe.corba.namingservice.binding.BindingList;

public interface NamingContext {
	
	void bind(Name name, Object obj) throws AlreadyBound;

	void rebind(Name name, Object obj);

	void bind_context(Name name, NamingContext nc);
	
	void rebind_context(Name name, NamingContext nc);

	ObjectRef resolve(Name name) throws NotFound;
	
	void unbind(Name name);
	
	NamingContext new_context();
	
	NamingContext bind_new_context(Name name);
	
	void destroy() throws NotEmpty;
	
	BindingList list(int how_many);
}
